package com.levy.contronller.jvm.bytecode;

/**
 *
 * 栈帧本身是一种数据结构，封装了方法的局部变量表、动态链接等信息、方法的返回地址以及操作数栈等信息
 *      符号引用：对于目标类的全局的完整的名字，包括包名啊等等，存在于字节码的常量池中
 *      直接引用：方法的直接内存地址
 * 有些符号引用是在类加载阶段或者第一次使用时就会转换为直接引用，这种转换叫做静态解析；in
 * 另外一些符号引用则是在每次运行时候转换为直接引用，这种转换叫做动态链接，这体现为JAVA的多态性
 *
 *
 * 1. invodeinterface: 调用接口中的方法，实际上是在运行期决定的，决定到底调用实现该接口的哪个对象的特定方法
 * 2. invokestatic: 调用静态方法
 * 3. invokevirtual: 调用自己的私有方法、构造方法(<init>)以及父类的方法
 * 4. invokedynamic: 动态调用方法
 *
 *
 * 静态解析的4种类型
 * 1. 静态方法
 * 2. 父类方法
 * 3. 构造方法
 * 4. 私有方法（无法被重写）
 * 以上4种方法称作非虚方法，他们是在类加载阶段就可以将符号引用转换为直接引用的。
 *
 */
public class MyTest4 {

    public static void test(){
        System.out.println("test invoked");
    }

    public static void main(String[] args) {
        test();
    }
}
